﻿using System;

namespace LeRenard.Libraries.Templating.Templating.Mapping
{
    /// <summary>
    /// Defines a non generic template mapping builder,
    /// a construct that facilitates the mapping fluent api.
    /// </summary>
    public interface INonGenericTemplateMappingBuilder : ITemplateMapping
    {
        /// <summary>
        /// Maps a constant string value to the placeholder,
        /// and adds it to the template.
        /// </summary>
        /// <param name="value">A constant string.</param>
        void To(string value);

        /// <summary>
        /// Maps a function, that returns a string, which generates a value for the placeholder,
        /// and adds it to the template.
        /// </summary>
        /// <param name="value">A function that returns a string.</param>
        void To(Func<string> value);
    }
}
